iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
0
自我挑戰組

ASP.NET MVC5從入門到退坑系列 第 10

[Day10]Scaffold產生的程式碼-Edit

  • 分享至 

  • xImage
  •  

今天來了解Scaffold產生的Edit


Controller

Edit其實乍看之下與Create一模一樣,一樣有兩個動作方法,GET負責顯示資料表單,POST負責更新資料庫

public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
           Mmeber members = db.Member.Find(id);
            if (members == null)
            {
                return HttpNotFound();
            }
            return View(members);
        }

        
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "id,姓名,Email,內容")] Mmeber members)
        {
            if (ModelState.IsValid)
            {
                db.Entry(members).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(members);
        }

HttpStatusCodeResult(HttpStatusCode.BadRequest);
這一段代碼意思是如果傳來的id是null,就回傳一個BadRequest的網頁狀態碼(400)
return HttpNotFound();
這一段代碼意思是如果在資料庫找不到對應的id就回傳一個HttpNotFound()方法,伺服器會回傳一個404找不到網頁的要求
[ValidateAntiForgeryToken]
這是一個屬性,用來預防CSRF攻擊
[Bind(Include = "id,姓名,Email,內容")] Mmeber members
這一段代碼則是用來做資料模型綁定,Include裡的代表我們要取得的資料欄位
if (ModelState.IsValid)
這一段則是對傳來的資料做模型驗證
db.Entry(members).State = EntityState.Modified;
這一段是對members的實體更改狀態為已修改,當呼叫了SaveChanges 時,所有的屬性值都會傳送至資料庫

View

View的部分跟Create大同小異,可以參考我第九天發布的文章


上一篇
[Day9]Scaffold產生的程式碼-Create
下一篇
[Day11]強型別與動態型別
系列文
ASP.NET MVC5從入門到退坑30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言